/*
 * str.h
 *
 *  Created on: Oct 19, 2024
 *      Author: 35702
 */

#ifndef INC_STR_H_
#define INC_STR_H_



#define T1_FREQ                 (168000000/168)                         /* 频率ft值 */
#define FSPR                    200                                     /* 步进电机单圈步数 */
#define MICRO_STEP              8                                       /*细分数*/
#define SPR                     (FSPR * MICRO_STEP)                     /* 单圈所需要的脉冲数 */  // 200*8

#define ROUNDPS_2_STEPPS(rpm)   ((rpm) * SPR / 60)                      /* 根据电机转速（r/min），计算电机步速（step/s） */
#define center_V(vo,vt)   ( ( (vo) + (vt) ) / 2 )                 /* S型加减速加速段的中点速度  */
#define INCACCEL(vo,v,t)        ( ( 2 * ((v) - (vo)) ) / pow((t),2) )   /* 加加速度:加速度增加量   V - V0 = 1/2 * J * t^2 */
#define INCACCELSTEP(j,t)       ( ( (j) * pow( (t) , 3 ) ) / 6.0f )     /* 加加速段的位移量(步数)  S = 1/6 * J * t^3 */
#define ACCEL_TIME(t)           ( (t) / 2 )                             /* 加加速段和减加速段的时间是相等的 */
#define SPEED_MIN               (T1_FREQ / (65535.0f))                  /* 最低频率/速度 */  // 最大计数值



unsigned int cacl_speed(unsigned long v0,unsigned long vt,float time);
void S_Motor_acc_inc(long v0,long vt,float AcTime,float DeTime,long step);

#endif /* INC_STR_H_ */












